package com.cats.template.sys.aggservices;

import com.cats.template.sys.pojo.dto.PermissionDto;
import com.cats.template.sys.pojo.dto.RoleDto;
import com.cats.template.sys.pojo.dto.UserDto;

import java.util.Set;

/**
 * @author duxiaobo
 * @date 2021/9/102:44 下午
 */
public interface SysAggService {

    UserDto getUserAndRolesByUserName(String userName);

    /**
     * 通过用户名获取用户 不包含角色和权限
     *
     * @param userName
     * @return
     */
    UserDto getUser(String userName);

    UserDto getUser(Long userId);

    /**
     * 通过用户名获取用户和密码 不包含角色和权限
     *
     * @param userName
     * @param password
     * @return
     */
    UserDto getUser(String userName, String password);

    /**
     * 通过用户Id获取角色不包含权限
     *
     * @param userId
     * @return
     */
    Set<RoleDto> getRolesByUserId(Long userId);

    /**
     * 通过角色Id获取权限数据
     *
     * @param roleId
     * @return
     */
    Set<PermissionDto> getPermissionDtoSetByRoleId(Long roleId);

    /**
     * 通过用户Id获取权限数据
     *
     * @param UserId
     * @return
     */
    Set<PermissionDto> getPermissionDtoSetByUserId(Long UserId);


    /**
     * 保存用户
     *
     * @param userDto
     * @return
     */
    UserDto saveUser(UserDto userDto);

    RoleDto saveRole(RoleDto roleDto);

    RoleDto getRole(Long roleId);

    Set<RoleDto> saveRole(Set<RoleDto> roleDtoList);

    PermissionDto savePermission(PermissionDto permissionDto);

    Set<PermissionDto> savePermission(Set<PermissionDto> permissionDtoSet);

    Boolean configRoles(Long userId, Set<Long> roleIds);

    Boolean configPermissions(Long roleId, Set<Long> permissionIds);
}
